package com.example.xmhds_1.entity;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.xmhds_1.dto.UserinfoChatDTO;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.util.*;

/**
 * 聊天消息实体类
 */
@Slf4j
@Data
public class ChatMessage {
    /**
     * 主键ID
     */
    private Long id;

    /**
     * 用户0
     */
    private String user0;

    /**
     * 用户1
     */
    private String user1;

    /**
     * 消息记录，JSON数组格式
     */
    private JSONArray messages;

    /**
     * 逻辑删除标记
     */
    private Integer deleted;
    /**
     * 将JSON数组转换为java对象
     */
    public List<UserinfoChatDTO> getMessages_json() {
        List<UserinfoChatDTO> messages_list = new ArrayList<>();
        for (int i = 0; i < messages.size(); i++) {
            String message = messages.getString(i);
            UserinfoChatDTO userinfoChatDTO = JSONObject.parseObject(message, UserinfoChatDTO.class);
            messages_list.add(userinfoChatDTO);
        }
        return messages_list;

    }
    /**
     * 将对应的java对象转换为json数组
     */
    public JSONArray  getMessages_string(List<UserinfoChatDTO> messages_list) {
        try {
            JSONArray messages = new JSONArray();
            messages_list.sort((a, b) -> a.getTimes().compareTo(b.getTimes()));
            for (UserinfoChatDTO message : messages_list) {
                String message_json = JSONObject.toJSONString(message);
                messages.add(message_json);
            }
            return messages;
        } catch (Exception e) {
            log.error("消息转换失败", e);
            return null;
        }
    }
}
